using System;
using System.Collections.Generic;
using System.Text;
using System.Web.Caching;
using Com.queryzer2.Domain.Entities;
using Com.queryzer2.Services.Base;
using Com.queryzer2.Cache;
using Com.queryzer2.Services.Impl;
using Com.queryzer2.Services.Interface;


namespace Com.queryzer2.Services.Impl
{
    public class AnagraficheServices : BaseSingleton<AnagraficheServices>,  IAnagraficheServices
    {
        public Dictionary<GEP_ANA_FASE.GEP_ANA_FASE_ID, GEP_ANA_FASE> getListaFasi()
        {
            if (!CacheManager<Dictionary<GEP_ANA_FASE.GEP_ANA_FASE_ID, GEP_ANA_FASE>>.exist(Com.queryzer2.Cache.CacheKeys.GEP_ANA_FASE))
                CacheManager<Dictionary<GEP_ANA_FASE.GEP_ANA_FASE_ID, GEP_ANA_FASE>>.set(CacheKeys.GEP_ANA_FASE,base.DbProvider.DaoImpl.AnagFaseDao.GetAll());
            return CacheManager<Dictionary<GEP_ANA_FASE.GEP_ANA_FASE_ID, GEP_ANA_FASE>>.get(CacheKeys.GEP_ANA_FASE);
        }

        public Dictionary<string, GEP_ANA_INAM> getMotiviInammisibilita()
        {
            if (!CacheManager<Dictionary<string, GEP_ANA_INAM>>.exist(Com.queryzer2.Cache.CacheKeys.GEP_ANA_INAM))
                CacheManager<Dictionary<string, GEP_ANA_INAM>>.set(CacheKeys.GEP_ANA_INAM, base.DbProvider.DaoImpl.AnagInammissibilitaDao.GetAll());
            return CacheManager<Dictionary<string, GEP_ANA_INAM>>.get(CacheKeys.GEP_ANA_INAM);
           
        }

        public Dictionary<string, GEP_ANA_MOTSTAFASE> getMotiviStatoSospensione()
        {
            if (!CacheManager<Dictionary<string, GEP_ANA_MOTSTAFASE>>.exist(Com.queryzer2.Cache.CacheKeys.GEP_ANA_MOT_SOSPENSIONE))
                CacheManager<Dictionary<string, GEP_ANA_MOTSTAFASE>>.set(CacheKeys.GEP_ANA_MOT_SOSPENSIONE, base.DbProvider.DaoImpl.AnagMotivoStatoFaseDao.GetAllByTipo(1));
            return CacheManager<Dictionary<string, GEP_ANA_MOTSTAFASE>>.get(CacheKeys.GEP_ANA_MOT_SOSPENSIONE);
           
        }

        public Dictionary<string, GEP_ANA_MOTSTAFASE> getMotiviStatoChiusura()
        {
            if (!CacheManager<Dictionary<string, GEP_ANA_MOTSTAFASE>>.exist(Com.queryzer2.Cache.CacheKeys.GEP_ANA_MOT_CHIUSURA))
                CacheManager<Dictionary<string, GEP_ANA_MOTSTAFASE>>.set(CacheKeys.GEP_ANA_MOT_CHIUSURA, base.DbProvider.DaoImpl.AnagMotivoStatoFaseDao.GetAllByTipo(2));
            return CacheManager<Dictionary<string, GEP_ANA_MOTSTAFASE>>.get(CacheKeys.GEP_ANA_MOT_CHIUSURA);

        }

        public Dictionary<string, GEP_ANA_SERV> getListaServizi()
        {
            if (!CacheManager<Dictionary<string, GEP_ANA_SERV>>.exist(Com.queryzer2.Cache.CacheKeys.GEP_ANA_SERV))
                CacheManager<Dictionary<string, GEP_ANA_SERV>>.set(CacheKeys.GEP_ANA_SERV, base.DbProvider.DaoImpl.AnagServizioDao.GetAll());
            return CacheManager<Dictionary<string, GEP_ANA_SERV>>.get(CacheKeys.GEP_ANA_SERV);
           
        }

        public Dictionary<string, GEP_ANA_STATOF> getListaStatiFase()
        {
            if (!CacheManager<Dictionary<string, GEP_ANA_STATOF>>.exist(Com.queryzer2.Cache.CacheKeys.GEP_ANA_STATOF))
                CacheManager<Dictionary<string, GEP_ANA_STATOF>>.set(CacheKeys.GEP_ANA_STATOF, base.DbProvider.DaoImpl.AnagStatoFaseDao.GetAll());
            return CacheManager<Dictionary<string, GEP_ANA_STATOF>>.get(CacheKeys.GEP_ANA_STATOF);
           
        }

        public Dictionary<string, GEP_ANA_VENDI> getListaVenditori()
        {
            if (!CacheManager<Dictionary<string, GEP_ANA_VENDI>>.exist(Com.queryzer2.Cache.CacheKeys.GEP_ANA_VENDI))
                CacheManager<Dictionary<string, GEP_ANA_VENDI>>.set(CacheKeys.GEP_ANA_VENDI, base.DbProvider.DaoImpl.AnagVenditoreDao.GetAll());
            return CacheManager<Dictionary<string, GEP_ANA_VENDI>>.get(CacheKeys.GEP_ANA_VENDI);
           
        }

        public List<GEP_TESTATA> ricercaPratiche(string tipo, string ente, string codfis, string ragsoc,string numPrt, string dta_ini, string dta_fine)
        {
            List<GEP_TESTATA> lst = base.DbProvider.DaoImpl.PraticaDao.ricercaPratiche(tipo, ente, codfis, ragsoc,numPrt, dta_ini, dta_fine);
            foreach (GEP_TESTATA t in lst)
            {
                t.Gep_ana_serv = this.getListaServizi()[t.Gep_ana_serv.Id_ser_cod_servizio];
                t.Gep_ana_vendi = this.getListaVenditori()[t.Gep_ana_vendi.Id_ven_cod_contr_disp];
            }
            return lst;
        }

        public List<GEP_TESTATA> ricercaPraticheByStato(int Stato)
        {
            List<GEP_TESTATA> lst = base.DbProvider.DaoImpl.PraticaDao.ricercaPraticheByStato(Stato);
            //foreach (GEP_TESTATA t in lst)
            //{
            //    t.Gep_ana_serv = this.getListaServizi()[t.Gep_ana_serv.Id_ser_cod_servizio];
            //    t.Gep_ana_vendi = this.getListaVenditori()[t.Gep_ana_vendi.Id_ven_cod_contr_disp];
            //}
            return lst;
        }

    }
}
